home *** CD-ROM | disk | FTP | other *** search
/ Aminet 37 / Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso / Aminet / dev / debug / SmartCrash.lha / SmartCrash / src / bin.saver.ASM next >
Encoding:
Assembly Source File  |  2000-03-09  |  2.0 KB  |  110 lines

  1. ; FILE: Source:bin.saver.ASM          REV: 7 --- save next hunk as PROGDIR:<progname>.bin
  2. ; History
  3. ;  0      2nd Dec 1997.
  4. ;  1      Working.
  5. ;  2      Now writes PROGDIR:fade.ovl
  6. ;  3      Now gets filename dynamically, renamed to bin.saver.ASM
  7. ;
  8.  
  9.     SECTION    A,CODE
  10.  
  11. Main_saver    movem.l    d1-a6,-(sp)
  12.     moveq    #20,d7            ;RETURN_FAIL,d7
  13.  
  14.     move.l    (Main_saver-4,pc),d4
  15.     beq    .exit
  16.     lsl.l    #2,d4
  17.     move.l    d4,a0
  18.     addq.l    #4,d4
  19.     move.l    -(a0),d3
  20.     subq.l    #8,d3
  21.  
  22.     move.l    (4).w,a6
  23.     lea    (378,a6),a0        ;LibList,a6),a0
  24.     lea    (.dosname,pc),a1
  25.     jsr    (-$84,a6)        ;call    Forbid
  26.     jsr    (-$114,a6)        ;call    FindName
  27.     jsr    (-$8A,a6)        ;call    Permit
  28.     move.l    d0,a6
  29.  
  30.     lea    (.progname,pc),a0
  31.     move.l    a0,d1
  32.     moveq    #127,d2
  33.     jsr    (-$240,a6)        ;call    GetProgramName
  34.  
  35.     lea    (.progname,pc),a0
  36.     move.l    a0,d1
  37.     jsr    (-$366,a6)        ;call    FilePart
  38.     move.l    d0,a0
  39.     lea    (.filepart,pc),a1
  40. .copy    move.b    (a0)+,(a1)+
  41.     bne.b    .copy
  42.     subq.l    #1,a1
  43.     move.b    #'.',(a1)+
  44.     move.b    #'b',(a1)+
  45.     move.b    #'i',(a1)+
  46.     move.b    #'n',(a1)+
  47.     clr.b    (a1)
  48.  
  49.     lea    (.file,pc),a0
  50.     move.l    a0,d1
  51.     jsr    (-$48,a6)        ;call    DeleteFile
  52.     lea    (.file,pc),a0
  53.     move.l    a0,d1
  54.     move.l    #$3EE,d2        ;MODE_NEWFILE,d2
  55.     jsr    (-$1E,a6)        ;call    Open
  56.     lea    (.exit,pc),a0
  57.     move.l    d0,d6
  58.     beq.b    .exite
  59.  
  60.     move.l    d6,d1
  61.     move.l    d4,d2
  62.     jsr    (-$30,a6)        ;call    Write
  63.     move.l    d0,d2
  64.     move.l    d6,d1
  65.     jsr    (-$24,a6)        ;call    Close
  66.     cmp.l    d2,d3
  67.     beq.b    .exitok
  68.  
  69.     lea    (.exitdel,pc),a0
  70.  
  71. .exite    move.l    a0,-(sp)
  72.     jsr    (-$84,a6)        ;call    IoErr
  73.     move.l    d0,d1
  74.     lea    (.errh,pc),a0
  75.     move.l    a0,d2
  76.     jmp    (-$1DA,a6)        ;jmp    (_LVOPrintFault,a6)
  77.  
  78. .exitok    lea    (.okmes,pc),a0
  79.     move.l    a0,d1
  80.     move.l    d3,-(sp)
  81.     move.l    d3,-(sp)
  82.     pea    (.file,pc)
  83.     move.l    sp,d2
  84.     jsr    (-$3BA,a6)        ;call    VPrintf
  85.     lea    (3*4,sp),sp
  86.  
  87.     moveq    #0,d7            ;RETURN_OK,d7
  88.  
  89. .exit    move.l    d7,d0
  90.     movem.l    (sp)+,d1-a6
  91.     rts
  92.  
  93. .exitdel    lea    (.file,pc),a0
  94.     move.l    a0,d1
  95.     jsr    (-$48,a6)        ;call    DeleteFile
  96.     bra.b    .exit
  97.  
  98.  
  99. .dosname    dc.b    'dos.library',0
  100. .errh    dc.b    'bin.saver',0
  101. .okmes    dc.b    'Saved first hunk to file "%s", lenght $%lx (%ld) bytes.',10,0
  102. .file    dc.b    'PROGDIR:'
  103. .filepart    ds.b    64
  104.  
  105. .progname    ds.b    128
  106.  
  107.     CNOP    0,4
  108.  
  109.     SECTION    B,CODE
  110.